package br.com.equipe1.modelo;

import java.util.Date;

public class Representante {
	
	private Integer idRepresentante;
	private String nome;
	private String apelido;
	private Date dataNascimento;
	private String email;
	private Cargo cargo;
	private Endereco endereco;
	
	public Representante() {
		
	}
	
	public Representante(Integer id, String nome, String apelido,
			Date dataNascimento, String email) {
		super();
		this.idRepresentante = id;
		this.nome = nome;
		this.apelido = apelido;
		this.dataNascimento = dataNascimento;
		this.email = email;
	}
	
	
	public Representante(Integer idRepresentante, String nome, String apelido,
			Date dataNascimento, String email, Cargo cargo, Endereco endereco) {
		super();
		this.idRepresentante = idRepresentante;
		this.nome = nome;
		this.apelido = apelido;
		this.dataNascimento = dataNascimento;
		this.email = email;
		this.cargo = cargo;
		this.endereco = endereco;
	}

	public Integer getId() {
		return idRepresentante;
	}
	
	public void setId(Integer id) {
		this.idRepresentante = id;
	}
	
	public String getNome() {
		return nome;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	public String getApelido() {
		return apelido;
	}
	
	public void setApelido(String apelido) {
		this.apelido = apelido;
	}
	
	public Date getDataNascimento() {
		return dataNascimento;
	}
	
	public void setDataNascimento(Date dataNascimento) {
		this.dataNascimento = dataNascimento;
	}
	
	public String getEmail() {
		return email;
	}
	
	public void setEmail(String email) {
		this.email = email;
	}


	public Cargo getCargo() {
		if(cargo == null){
			cargo = new Cargo();
		}
		return cargo;
	}

	public void setCargo(Cargo cargo) {
		this.cargo = cargo;
	}

	public Endereco getEndereco() {
		if(endereco == null){
			endereco = new Endereco();
		}
		return endereco;
	}

	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}
	
	public String getEnderecoFormatado(){
		return getEndereco().getLogradouro() +", " 
			   + getEndereco().getNumero() +", "
			   + getEndereco().getComplemento() != null ? getEndereco().getComplemento()+", " : ""
			   + getEndereco().getBairro() +", "
			   + getEndereco().getCidade() +", "
			   + getEndereco().getUf()+ ", "
			   + getEndereco().getCep() + ", ";
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((apelido == null) ? 0 : apelido.hashCode());
		result = prime * result + ((cargo == null) ? 0 : cargo.hashCode());
		result = prime * result
				+ ((dataNascimento == null) ? 0 : dataNascimento.hashCode());
		result = prime * result + ((email == null) ? 0 : email.hashCode());
		result = prime * result
				+ ((endereco == null) ? 0 : endereco.hashCode());
		result = prime * result + idRepresentante;
		result = prime * result + ((nome == null) ? 0 : nome.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Representante other = (Representante) obj;
		if (apelido == null) {
			if (other.apelido != null)
				return false;
		} else if (!apelido.equals(other.apelido))
			return false;
		if (cargo == null) {
			if (other.cargo != null)
				return false;
		} else if (!cargo.equals(other.cargo))
			return false;
		if (dataNascimento == null) {
			if (other.dataNascimento != null)
				return false;
		} else if (!dataNascimento.equals(other.dataNascimento))
			return false;
		if (email == null) {
			if (other.email != null)
				return false;
		} else if (!email.equals(other.email))
			return false;
		if (endereco == null) {
			if (other.endereco != null)
				return false;
		} else if (!endereco.equals(other.endereco))
			return false;
		if (idRepresentante != other.idRepresentante)
			return false;
		if (nome == null) {
			if (other.nome != null)
				return false;
		} else if (!nome.equals(other.nome))
			return false;
		return true;
	}

	@Override
	public String toString() {
		return "Representante [idRepresentante=" + idRepresentante + "]";
	}
}
